package com.typhoon.spring_shiro.utils.limit;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 限制规则集
 * 
 * 单位时间大的规则，一定要求比单位时间小的规则限制次数更小。
 * 
 * @author Typhoon
 * @date 2017-06-08 15:09
 * @since V2.0
 */
public class LimitRuleSet {
    /**
     * 规则列表
     */
    private List<LimitRule> rules = new ArrayList<LimitRule>(5);


    public void sort() {
        Collections.sort(rules, new Comparator<LimitRule>() {

            @Override
            public int compare(LimitRule o1, LimitRule o2) {
                return o1.getSeconds() - o2.getSeconds(); // 按照规则周期从小到大排列
            }

        });
    }


    public void add(LimitRule rule) {
        this.rules.add(rule);
        sort(); // 排序,按照宽松级别，最宽松的在最上面
    }

    public int size() {
        return rules.size();
    }

    public List<LimitRule> list() {
        return rules;
    }

}
